【李飞飞团队最新研究】神经任务编程NTP,具有强大泛化能力的机器人学习框架
来源:arxiv.org
编译:刘小芹(新智元)
论文下载:https://arxiv.org/pdf/1710.01813.pdf
GitHub地址:https://github.com/StanfordVL/ntp
摘要
在这项研究中,我们提出一种新型机器人学习框架,称为神经任务编程(Neural Task Programming,NTP),它将从演示到神经程序推导(neural program induction)的 few-shot learning 想法结合起来。NTP将一个任务规范(例如,一个任务的视频演示)作为输入,并递归地将其分解为更精细的子任务规范。这些规范被馈入一个分层的神经程序,其中底层程序是可以与环境交互的可调用子程序。我们在三个机器人操作任务中验证了我们的方法。NTP在具有分层结构和组合结构的序列任务中实现了强大的泛化(generalization)能力。实验结果表明,NTP通过不断增加的长度,可变拓扑和变化的目标学习很好地拓展到未知任务。
https://v.qq.com/txp/iframe/player.html?vid=k0559x1cyys&width=500&height=375&auto=0
在复杂的操作任务中,例如物体分类、装配和清理,需要在机器人和环境之间的长时间交互中进行连续的决策。在复杂的任务中进行规划以及适应新的任务目标和初始条件,是机器人技术的一个长期挑战。
让我们试想一个在仓库环境中的物体分类任务——它需要分类、从仓库中检索,最后打包装运。每个任务都是一组基本的分层的序列,例如 pick_up、move_to 和 drop_into,它们可以被组合成操纵子任务,例如抓起和放下(grasping and placing)。这个问题有很大的变化空间:仓库中的不同物体位图、子任务的排列、不同长度的任务列表等等,这就导致形成一个很大的任务空间。
图1:(上)在测试时,NTP实例化一个任务条件策略(一个神经程序),通过解释演示任务执行指定任务。 (下)我们分别在模拟环境和实际环境中的方块堆叠(A,B),物体分类(C,D)和桌面清理(图8)任务评估NTP。
举个例子,图1中,(C)显示了一个物体分类任务的简化设置。任务是将4个类别的物体移到到4个箱子里。在各类别和容器之间总共有256种可能的映射,并且对象实例的可变数目进一步增加了复杂性。在本文中,我们试图解决复杂任务规划领域的两个挑战,即(a)推广到新任务目标的学习策略,以及(b)用于长期环境交互的原语( primitives)的层次组合。
图2:神经任务编程(NTP):给定一个输入程序,一个任务规范和当前的环境观察,NTP模型预测子级程序运行,子级程序应作为输入的任务规范的子序列 。
我们提出神经任务编程(NTP),这是一个统一的,任务不可知的学习算法,可以应用于具有潜在分层结构的各种任务。NTP的一个关键的基本思想是学习跨任务和域共享的可重用表示。NTP解释一个任务规范(图1左),并将分层策略实例化为一个神经程序(图1中),其中底层程序是可在环境中执行的原始动作。任务规范被定义为描述任务过程和最终目标的时间序列。它可以是记录状态轨迹的第一或第三人称的视频任务演示,或者甚至是一个语言指令列表。在这项研究中,我们使用任务演示作为任务规范。
我们尝试了两种形式的任务演示:任务中对象的位置轨迹,以及任务的第三人称视频演示。NTP将任务的目标从输入规范中解码,并将其分解为子任务,并通过闭环反馈与环境交互,直到达到目标(图1右)。每个程序调用将作为输入环境观察和任务规范,生成下一个子程序和相应的子任务规范。分层结构的最低层是通过机器人API捕获的符号动作。这种层次分解有助于信息隐藏和模块化,因为低层的模块只访问与它们的功能相关的相应子任务规范。它防止模型在训练数据上学习假依赖关系,从而产生更好的可重用性。本质上,NTP解决了任务推广的一个关键挑战:跨任务转移的元学习(meta-learning)和分层模型( hierarchical model),从而扩展到更复杂的任务。因此,NTP具有神经编程和分层RL的优势,同时弥补了它们的不足。
我们证明NTP可以扩展为三种任务结构的变化:
1)任务长度:由于问题大小的增加而改变步数(例如,有更多的物体需要运送);
2)任务拓扑:子任务的灵活排列和组合,以达到相同的最终目标(例如,以不同的顺序操纵物体);
3)任务语义:不同的任务定义和成功条件(例如,将对象放入不同的容器)。
网络实现细节
研究的主要贡献
1)我们的主要贡献是提出一个新的建模框架:NTP,可以实现分层任务的元学习。
2)我们在模拟环境以及实际的机器人实验中对单臂操作任务进行NTP的评估:方块堆叠,物体分类和桌面清理。
3)我们的研究表明,NTP可以实现知识迁移,以及基于one-shot演示的新任务的推广,新任务包括增加长度,变化拓扑和改变语义,而不限制初始配置。
4)我们还表明NTP可以通过视觉输入(图像和视频)进行端到端的训练。
图3:在块堆叠任务中NTP的执行跟踪示例。
图4:任务结构的可变性包括改变成功条件(任务语义)、可变子任务排列(任务拓扑)和改变任务大小(任务长度)。我们评估了NTP模型推广到这三种类型变化的能力。
图5:任务长度与成功率
图6:任务语义与成功率
图7:可见状态NTP与成功率
结论和未来的研究
本研究中,我们提出神经任务编程(NTP),这是一种元学习框架,它可以学习模块化和可重用的神经程序,用于分层任务。我们展示了NTP在3类机器人操作任务中的优势,这些任务需要长时间、复杂的环境交互。NTP实现了对任务长度、拓扑和语义的泛化。这项工作使我们有机会使用可泛化的神经程序来建模分层任务。至于未来的工作,我们计划:1)改进状态编码器,以提取更多的任务突出信息,例如对象关系,2)设计更丰富的API,以及3)扩展这个框架,以在真实的机器人环境中处理更复杂的任务。
本文授权转自新智元。
*推荐阅读*
UCSB研究发现计算机与人类视觉差异,用人眼搜索策略提升计算机视觉
*注*:如有想加入极市专业CV开发者微信群(项目需求+分享),请填写申请表(链接:http://cn.mikecrm.com/wcotd9)申请入群.